package io;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.Scanner;

/**
 * 问文本文件转换字符集
 * 
 * 程序启动后，输入要转换字符集的文本文件的名字，然后再输入该文件的字符集名字
 * 然后再输入要转换的字符集名字。之后程序会将该文件内容以指定的字符集写入
 * 另一个文件。
 * 例如:有一个文件名为demo.txt,该文件的字符集用的是UTF-8。现在要将该文件内容
 * 转换为GBK编码的。
 * 程序启动后输入三个信息:
 * demo.txt
 * UTF-8
 * GBK
 * 然后程序运行后会生成一个名为demo_gbk.txt文件。
 * 
 * 
 * @author Xiloer
 *
 */
public class Test03 {
	public static void main(String[] args) {
		Scanner scanner  = new Scanner(System.in);
		System.out.println("请输入文件名:");
		String fileName = scanner.nextLine();//demo.txt
		System.out.println("请输入该文件的字符集:");
		String charset = scanner.nextLine();//utf-8
		System.out.println("请输入要转换的字符集:");
		String newCharset = scanner.nextLine();//gbk
		
		//截取原文件名
		String name = fileName.substring(0,fileName.lastIndexOf("."));
		//截取原文件的后缀名
		String ext = fileName.substring(fileName.lastIndexOf(".")+1);
		try (
			FileInputStream fis = new FileInputStream(fileName);
			InputStreamReader isr = new InputStreamReader(fis,charset);
			BufferedReader br = new BufferedReader(isr);
				
			FileOutputStream fos = new FileOutputStream(name+"_"+newCharset+"."+ext);//demo_gbk.txt	
			OutputStreamWriter osw = new OutputStreamWriter(fos,newCharset);
			BufferedWriter bw = new BufferedWriter(osw);
			PrintWriter pw = new PrintWriter(bw);
		){
			String line = "";
			while((line = br.readLine())!=null) {
				pw.println(line);
			}
			System.out.println("转码完毕!");
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
}










